using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Quartz;
using Quartz.Job;

namespace goAlarmsCS
{
    internal class AlarmBehaviors<T> where T : Alarm
    {
        private Action _snoozeBehavior;
        private Action _dismissBehavior;
        private Action _disableBehavior;
        private Action _enableBehavior;
        private Action _setNextTriggerTimeBehavior;
        private T _alarm;

        /// <summary>
        /// Initializes a new instance of the AlarmBehaviors class.
        /// </summary>
        /// <param name="snoozeBehavior"></param>
        /// <param name="dismissBehavior"></param>
        /// <param name="disableBehavior"></param>
        /// <param name="enableBehavior"></param>
        /// <param name="setNextTriggerTimeBehavior"></param>
        public AlarmBehaviors(T alarm, Action snoozeBehavior, Action dismissBehavior, Action disableBehavior, Action enableBehavior, Action setNextTriggerTimeBehavior)
        {
            _alarm = alarm;
            _snoozeBehavior = snoozeBehavior;
            _dismissBehavior = dismissBehavior;
            _disableBehavior = disableBehavior;
            _enableBehavior = enableBehavior;
            _setNextTriggerTimeBehavior = setNextTriggerTimeBehavior;
        }
        public AlarmBehaviors() { }
         
        public Action SnoozeBehavior
        {
            get
            {
                return _snoozeBehavior;
            }
        }
        public Action DismissBehavior
        {
            get
            {
                return _dismissBehavior;
            }
        }
        public Action DisableBehavior
        {
            get
            {
                return _disableBehavior;
            }
        }
        public Action EnableBehavior
        {
            get
            {
                return _enableBehavior;
            }
        }
        public Action SetNextTriggerTimeBehavior
        {
            get
            {
                return _setNextTriggerTimeBehavior;
            }
        }

    }
}
